import 'dart:html';

///函数 Function

void main() {
  ///级联符号..允许您在同一个对象上进行一系列操作。
  querySelector('#confirm') // Get an object.
    ?..text = 'Confirm' // Use its members.
    ..classes.add('important')
    ..onClick.listen((e) => window.alert('Confirmed!'));
  //相当于
  var button = querySelector('#confirm');
  button?.text = 'Confirm';
  button?.classes.add('important');
  button?.onClick.listen((e) => window.alert('Confirmed!'));
  say('Bob', 'Howdy'); //结果是： Bob says Howdy
  enableFlags(true, bold: false);
  say('Bob', 'Howdy', "我是"); //结果是： Bob says Howdy
  say('Bob', 'Howdy', "我是", true); //结果是： Bob says Howdy
}

///可选的命名参数, 定义函数时，使用{param1, param2, …}，用于指定命名参数设置[bold]和[hidden]标志
void enableFlags(bool bool, {bool? bold, String? hidden}) {
  // ...
}

///可选的位置参数，用[]它们标记为可选的位置参数：
String say(String from, String msg, [String? device, bool? isdown]) {
  var result = '$from says $msg';
  if (device != null) {
    result = '$result with a $device';
  }
  return result;
}

// 使用list 或者map设置默认值
void doStuff({List<int>? list, Map<String, String>? gifts}) {
  print('list:  $list');
  print('gifts: $gifts');
}
